﻿<?xml version="1.0" encoding="utf-8" ?>

<course title="LINQ" description="En kurs om .NET Language Integrated Query - En ny programmeringsmodell för dataåtkomst i .NET 3.5">

  <section headline="Introduktion till LINQ">
    <animation height ="100" autostart ="true">Course/boll.xaml</animation>
    <animation height ="100" autostart ="false">Course/Test1.xaml</animation>
    <text background ="#2A5175">
      <part color ="white" font="Arial" size="20" underline ="true">En enhetlig programmeringsmodell för dataåtkomst</part>
      <break/>
      <break/>
      <part color ="white" font="Arial" bold ="true">Idag är det självklart att använda objektorienterade (OO)-tekniker som klasser, objekt, arv och metoder när utveckling sker i .NET-miljö. Men vad som fortfarande utgör en stor utmaning i många utvecklingsprojekt är valet av tekniker för dataåtkomst och hanteringen av olika typer av datastrukturer. Data lagrad i XML-filer på disk och data som återfinns i relationstabeller i SQL-Server är två exempel på datastrukturer som inte direkt mappar mot objektstrukturer och där utvecklare varit tvungna att skapa egna sätt att hantera kopplingen mellan dessa strukturer och objektsmodellen eller att förlita sig på funktionalitet i tredjepartsramverk.</part>
      <break/>
      <break/>
      <part color ="white">Med LINQ, som står för </part>
      <part  font ="Georgia" color="red" italic ="true" underline ="true" bold ="true">.NET Language Integrated Query</part>
      <part color ="white">, får utvecklare en gemensam modell i .NET-ramverket för att arbeta med datastrukturer, oavsett om datakällan är tabeller i SQL Server, XML, kollektioner av objekt i minnet eller DataSet.</part>
      <break/>
      <break/>
      <part color ="white">LINQ introducerar ett helt nytt frågespråk som innehehåller ett antal olika frågeuttryck som har integrerats i C# 3.0 och VB.NET 9.0.</part>
      <part color ="white">Dessa frågeuttryck kan användas mot alla typer av kollektioner som implementerar IEnumerable&lt;T&gt;. Syntaxen för frågespråket påminner starkt om SQL-syntax vilket gör det snabbt och enkelt att komma igång med för utvecklare som tidigare arbetat med SQL.</part>
      <part color ="white">LINQ gör det alltså möjligt att komma åt, filtrera, omforma och manipulera datastrukturer oavsett vilken datakälla dessa härstammar ifrån.</part>
      <break/>
      <break/>
      <part color ="white">Den inbyggda funktionaliteten i LINQ hanterar LINQ to Objects, LINQ to SQL, LINQ to XML och Link to DataSet men eftersom LINQ är enkelt att utöka har flera exempel på kopplingar till andra datakällor skapats - såsom LINQ to Amazon och LINQ to Sharepoint.</part>
    </text>
    <link text ="AgLux">http://agluxproject.spaces.live.com/default.aspx</link>
    <picture filling="threeFourth" caption="LINQ arkitektur och komponenter">Course/LINQarkitektur.png</picture>

    <section headline="Grunderna i LINQ">
      <text>
        <part>Vi ska här se en film som visar grunderna i LINQ och hur ett frågeuttryck kan användas för att filtrera data ur en kollektion av objekt i minnet.</part>
        <break/>
      </text>
      <video transcript ="Course/Te.txt" filling ="threeFourth">Course/LINQ1_vc1.wmv</video>
    </section>
  </section>

  <section headline="LINQ to SQL">
    <text>
      <part font="Arial" size="20">O/R-mappning med LINQ to SQL</part>
      <break/>
      <break/>
      <part>LINQ innehåller funktionaliten 'LINQ to SQL' för att skapa mappningar (O/R-mappning) mellan objekt och relationsdata lagrad i SQL Server.</part>
      <part>Det går att skapa manuella mappningar mellan klasser och databasobjekt genom att sätta speciella attribut på befintliga klassdefinitioner</part>
      <break/>
      <break/>
      <part>I nedanstående film visas hur den manuella mappningen mellan klasser och tabeller i databasen fungerar samt hur dataåtkomst kan ske med hjälp av den inbyggda funktionaliteten i LINQ to SQL.</part>
    </text>
    <video>Course/LINQ2_vc1.wmv</video>


    <section headline="Använda XML för mappning">
      <text>
        <part>Det går även att använda en XML-fil för mappningen mellan klasser och objekt i databasen. Detta ger en flexiblare struktur och gör det t.ex. möjligt att ändra namn på ett fält i databasen utan att behöva kompilera om det projekt som innehåller LINQ to SQL-funktionaliteten.</part>
      </text>
      <video>Course/LINQ3_vc1.wmv</video>
    </section>

    <section headline="Automatisk generering av klasser utifrån databasobjekt">
      <text>
        <part>Det går även att automatgenerera klassdefinitioner utifrån en befintlig databasstruktur i SQL Server.</part>
        <break/>
        <break/>
        <part>Genom att skapa ett 'LINQ to SQL Classes'-diagram (.dbml-fil) kan tabeller, vyer och lagrade procedurer från databasen dras och släppas ner i en ny designyta i Visual Studio som genererar C# eller VB.NET-kod för motsvarande klasser.</part>
      </text>
      <picture filling="threeFourth" caption="Screenshot från Visual Studio">Course/LINQtoSQL.png</picture>
      <text>
        <part>I nedanstående film visas generering av klasser med hjälp av 'LINQ to SQL Classes'-diagram.</part>
      </text>
      <video>Course/LINQ4_vc1.wmv</video>
    </section>
  </section>
  
  <section headline="Kunskapstest">
    <task>
      <question text="Vad står LINQ för?">
        <answer correct="no">Like the Information Need Querys</answer>
        <answer correct="no">.NET Language Integration Questions</answer>
        <answer correct="yes">.NET Language Integrated Query</answer>
      </question>
      <question text="Du kan använda vad för att koppla klasser mot databasobjekt i en separat XML-fil?">
        <answer correct="no">ObjectXMLMappingSource</answer>
        <answer correct="no">MappingSource</answer>
        <answer correct="yes">XMLMappingSource</answer>
      </question>
      <question text="Vilka är de delfunktionerna i LINQ som finns inbyggda i .NET-ramverket?">
        <answer correct="no">LINQ to Objects, LINQ to SQL, LINQ to Amazon, LINQ to Sharepoint</answer>
        <answer correct="yes">LINQ to Objects, LINQ to SQL, LINQ to XML, Link to DataSet</answer>
        <answer correct="no">LINQ to Objects, LINQ to SQL, LINQ to XML</answer>
      </question>
    </task>
  </section>
  
</course>
